Hexo - 把word转成markdown

因为想用markdown写Hexo+Github发布博客(我的个人静态博客),而我的文档是word写的。

方案

目前只研究了Mac下的方案:

  1. word-to-markdown,google用word
    to
    markdown搜出来第一个,看来这个名字起得好。用这个的话得装个LibreOffice

  2. pandoc,这个就比较大名鼎鼎了

  3. unoconv介绍

首先尝试word-to-markdown

我用google搜到的第一个就是这个了,当然要试试。

坑:Mac自带Ruby

要玩gem,首先当然是上(Fan)套(Qiang)咯。连上vpn,然后:

\$ gem install word-to-markdown

你以为这么一句话就能搞定了吗,那可真就太天真了。撞到最后一个premailer开始报对gem文件夹没有权限的错误,查了查,其实就是Mac版自带ruby版本的问题,不允许随便装东西,即便有sudo也不让。

网上的解决方案是开机安住CMD+R,把Integrity
Protection禁用,然后进系统装不能装的gem,然后再回去把它启用。这方案麻烦不说,其实还是在系统的gem库里加了也许就只会用那么一两次的不该加的东西,各种不安嘛,这方案明显不符合我的审美。

ok,那就rbenv走起吧

求助万能的谷哥,提供了两种选择,rbenv或者rvm,看了一下,貌似rbenv更加的handoff,而且提供Homebrew安装,那就选它了。

\$ brew update

\$ brew install rbenv

然后官方说是要运行rbenv init,运行一下说把下面这行加到.zshrc里去�

eval \”\$(rbenv init -)\”

然后重启一下Terminal,

# 看看装了些啥版本,system就是系统自带的了

\$ rbenv versions

# 然后看看当前的版本

\$ rbenv version

# 看看能装哪些版本

\$ rbenv install list

最后随便选了个2.3.0(其实也不是随便选的,我这人就爱最新版,但2.4.0还在dev,就选这个次新版了)

\$ rbenv install 2.3.0

\$ rbenv global 2.3.0

这样就把ruby命令替换成rbenv管理的版本了,各种gem
install也不会报什么权限错误啊操作不允许之类的了。

速度重装word-to-markdown

\$ gem install word-to-markdown

这次安装过程果然顺利,装完运行:

\$ w2m 1.docx

我勒个去,转换结果直接输出到命令行了,而且也貌似并没有提供什么参数来指定输出文件,官方的意思就是:我输出到stdout了,剩下的你自己玩吧。

那就redirect一下吧

\$ w2m 1.docx > 1.md

so easy嘛,顺便说说这个redicrect,有这么几种用法:

system_profiler > file.txt

  1. > take the output of system_profiler and save it to the file
    file.txt

  2. &> The & tells the shell to redirect the standard output and
    standard error to the file.

  3. 2> If you want to just output standard error

  4. >> appending to the existing file

大名鼎鼎的Pandoc

其实一开始只知道第一个方案,后来搜搜索的过程中居然发现大名鼎鼎的的Pandoc也是能干这个事情的,

macOS安装(其他的系统看官网):You
can install pandoc using homebrew:
brew install pandoc

# Docx to markdown, including math:

\$ pandoc -s example30.docx -t markdown -o example35.md

更多的Pandoc转换命令

对Table转换的表现

由于其实要要写数据库设计文档,所以我主要是比较关注对Table的转换

word-to-markdown

转出这么个玩意儿

| **名称** | **数据类型** | **默认值** | **说明**
| **描述** |

| --- | --- | --- | --- | --- |

| id | int(11) |

| 主键 |

|

| f\_classify\_id | tinyint(2) |

| 一级分类id | act\_classify表的id |

| s\_classify\_id | tinyint(2) |

| 二级分类ID |

|

| count | int(11) |

| 命中次数 |

|

| date | date |

| 日期 | 单位:天 |

没细看源码,这种转换效果,估计对合并单元格的表格支持是有问题的(不过md的table本就不支持合并单单元格这么复杂的玩意儿),很明显的在不该换行的地方换行了。

Pandoc

其实pandoc并不支持markdown里的table语法,只是吧表格转换成了一个视觉上的表格。

**名称** **数据类型** **默认值** **说明** **描述**

----------------- --------------
------------ ------------
---------------------

id int(11) 主键

f\_classify\_id tinyint(2) 一级分类id act\_classify表的id

s\_classify\_id tinyint(2) 二级分类ID

count int(11) 命中次数

date date 日期 单位:天

这就有点尴尬了,不过其实标准的md语法并不支持table,好吧,就这么自我安慰好了。

结论

  1. 用word-to-markdown之后进一步手动编辑整理完善表格。

  2. 如果没什么特别要求,只是想把word转成markdown看看,然后看着更方便的话,pandoc对table的转换更具有可读性,对一些不支持table语法转换的markdown编辑器来说也更友好一些。

0%